#ifndef LED_DRIVER_H
#define LED_DRIVER_H

// 引入内核模块相关的头文件
#include <linux/init.h>            // 用于模块初始化和退出函数
#include <linux/module.h>          // 用于模块加载、卸载等功能
#include <linux/platform_device.h> // 用于支持平台设备的功能
#include <linux/ioport.h>          // 用于处理 I/O 端口相关操作
#include <linux/miscdevice.h>      // 用于处理杂项设备
#include <linux/fs.h>              // 用于文件系统操作相关的函数
#include <linux/uaccess.h>         // 提供用户空间与内核空间之间的访问功能
#include <linux/io.h>              // 提供 I/O 映射操作相关的功能
#include <linux/of.h>              // 设备树的支持
#include <linux/of_address.h>      // 设备树中的地址解析函数

// 宏定义：驱动名称和缓冲区大小
#define DEVICE_NAME "led_driver"    // 驱动的名称，用于创建设备文件
#define BUF_SIZE 100               // 定义设备缓冲区的大小为 100 字节

// 函数声明：以下是该头文件中声明的函数
int read_tree_node(u32 *reg, u32 *size);  // 读取设备树节点信息，填充 GPIO 寄存器的地址和大小
int led_probe(struct platform_device *pdev); // 驱动的 probe 函数，设备加载时调用
int led_remove(struct platform_device *pdev); // 驱动的 remove 函数，设备卸载时调用

#endif /* LED_DRIVER_H */
